【指针与数组区别】ch[]与*ch??

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:21:02
RT,这两个有的时候可以替换。

但是存字符串时却不完全相同。

char ch1[]="我爱你";
char *ch2="我爱你";
cout<<sizeof(ch1)<<endl;//结果7
cout<<sizeof(ch2)<<endl;//结果4
我知道第二个是首地址,但第一个是什么,不懂啊,不是首地址吗?

程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于(堆)中。
关于char *p与char p[],你可以看一段简单程序,我给你举个例子:
#include "stdio.h"
char *get_string_1()
{
char p[] = "hello world!";
return p;
}
char *get_string_2()
{
char *p = "hello world!";
return p;
}
int main()
{
char *p;
p = get_string_1();
printf("get_string_1:%s\n",p);
p = get_string_2();
printf("get_string_2:%s\n",p);
return 0;
}
输出:
get_string_1:(乱码或者没有输出),linux下没有任何输出
get_string_2:hello world!
为什么会这样?
你可以思考一下:
1、char *p = "hello world!";这样写到底合不合法,实际应用中能不能这样写
2、char *p = "hello world!";与char p[]="hello world!";有什么细节和操作上的差异。
解答如下:
char *p = "hello world!";与char p[] = "hello world!"; 两者都用来声明一个字符串,并将其初始化为hello world!,但是表示的意义确是大不相同。
从其声明的对